package com.example.demo.mapper;

import com.example.demo.entity.NewTask;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;

@Mapper
public interface NewTaskMapper {

    int insert(NewTask newTask);

    NewTask selectById(@Param("id") Long id);

    List<NewTask> selectPage(@Param("offset") int offset,
            @Param("size") int size,
            @Param("dataSourceId") Long dataSourceId,
            @Param("isAssigned") Integer isAssigned);

    long count(@Param("dataSourceId") Long dataSourceId,
            @Param("isAssigned") Integer isAssigned);

    int updateById(NewTask newTask);

    int deleteById(@Param("id") Long id);

    NewTask selectByBizUniqueId(@Param("bizUniqueId") String bizUniqueId);

    NewTask selectByDataSourceIdAndBizUniqueId(@Param("dataSourceId") Long dataSourceId,
            @Param("bizUniqueId") String bizUniqueId);

    int insertBatch(@Param("tasks") List<NewTask> tasks);

    int deleteByDataSourceId(@Param("dataSourceId") Long dataSourceId);

    /**
     * 获取所有数据源的任务统计信息
     */
    List<Map<String, Object>> getDataSourceTaskStats();

    /**
     * 获取单个数据源的任务统计信息
     */
    Map<String, Object> getDataSourceTaskStatsById(@Param("dataSourceId") Long dataSourceId);

    /**
     * 搜索任务（支持JSON字段搜索）
     */
    List<NewTask> searchTasks(@Param("offset") int offset,
            @Param("size") int size,
            @Param("dataSourceId") Long dataSourceId,
            @Param("isAssigned") Integer isAssigned,
            @Param("searchParams") Map<String, Object> searchParams);

    /**
     * 统计搜索结果总数
     */
    long countSearchTasks(@Param("dataSourceId") Long dataSourceId,
            @Param("isAssigned") Integer isAssigned,
            @Param("searchParams") Map<String, Object> searchParams);

    /**
     * 查询所有任务
     */
    List<NewTask> selectAll();
}
